package com.sxhuayuan.parking.service;

import java.util.List;

import com.sxhuayuan.parking.config.Platform;
import com.sxhuayuan.parking.plugin.invoice.InvoicePlugin;
import com.sxhuayuan.parking.plugin.parking.ParkingPlugin;
import com.sxhuayuan.parking.plugin.partnerpay.PartnerpayApiService;
import com.sxhuayuan.parking.plugin.storage.StoragePlugin;

/**
 * Service - 插件
 */
public interface PluginService {

	/**
	 * 获取支付插件
	 * 
	 * @return 支付插件
	 */
	List<ParkingPlugin> getParkingPlugins();

	/**
	 * 获取存储插件
	 * 
	 * @return 存储插件
	 */
	List<StoragePlugin> getStoragePlugins();
	
	/**
	 * 获取免密代扣插件
	 * @return
	 */
	List<PartnerpayApiService> getPartnerpayApiService();

	/**
	 * 获取存储插件
	 * 
	 * @param isEnabled
	 *            是否启用
	 * @return 存储插件
	 */
	List<StoragePlugin> getStoragePlugins(boolean isEnabled);

	/**
	 * 获取开票插件列表
	 * @return 开票插件列表
	 */
	List<InvoicePlugin> getInvoicePlugins();

	/**
	 * 获取支付插件
	 * 
	 * @param id
	 *            ID
	 * @return 支付插件
	 */
	ParkingPlugin getParkingPlugin(String id);

	/**
	 * 获取存储插件
	 * 
	 * @param id
	 *            ID
	 * @return 存储插件
	 */
	StoragePlugin getStoragePlugin(String id);
	
	/**
	 * 获取免密代扣插件
	 * @param platform
	 * @return
	 */
	PartnerpayApiService getPartnerpayApiService(Platform platform);

	InvoicePlugin getInvoicePlugin(String id);

}